import logging
import os
import time
from flask import Flask
# from logging.handlers import RotatingFileHandler
from concurrent_log_handler import ConcurrentRotatingFileHandler
import settings


# log配置，实现日志自动按日期生成日志文件

def init_logger(app:Flask):
    # 日志文件名，以日期作为文件名
    log_file_name = 'logger-' + time.strftime('%Y-%m-%d', time.localtime(time.time())) + '.log'

    # 日志文件路径
    log_file_path = os.path.join(settings.LOG_PATH, log_file_name)

    # 默认日志等级的设置
    logging.basicConfig(level=settings.LOG_LEVEL)

    # 设置日志的格式                   发生时间    日志等级     日志信息文件名      函数名          行数        日志信息
    formatter = logging.Formatter(
        '%(asctime)s - %(levelname)s - %(filename)s - %(funcName)s - %(lineno)s - %(message)s')

    # 创建日志记录器，指明日志保存路径,每个日志的大小，保存日志的上限
    # rotateHandler = RotatingFileHandler(log_file_path, maxBytes=64 * 1024, backupCount=10, encoding='UTF-8')
    rotateHandler = ConcurrentRotatingFileHandler(log_file_path, mode="a", maxBytes=5 * 1024 * 1024, backupCount=5,encoding='UTF-8')

    # 将日志记录器指定日志的格式
    rotateHandler.setFormatter(formatter)

    # 为全局的日志工具对象（flask app使用的）添加日志记录器
    app.logger.addHandler(rotateHandler)




